# 字符串定义的几种方式
# 1、使用单号
s1 = 'hello world'
# 2、使用双引号
s2 = "hello world"
# 3、使用三引号
s3 = """hello world"""
# 4、使用str()来定义一个空字符串
s4 = str()

# 字符串索引取值
s = "abcdefghijk"
# 使用索引取值,获取第三个字符
print(s[2])
# 使用索引取值，获取第一个字符
print(s[0])
# 使用索引取值，获取倒数第二个字符
print(s[-2])
# 使用索引取值，获取最后一个字符
print(s[-1])

# 字符串的切片
s = "hello world"
# 从第2个索引位置切到第5个索引位置（不包含第5个索引位置的字符），总共切出来的字符个数为5-2 = 3个
# s[start:end]
print(s[2:5])

# 从第一个位置切到第5个索引的位置，一共切出来的字符个数为5-0 = 5个
# s[start:]
print(s[:5])

# 从第6个索引位置开始，到末尾切
# s[:end]
print(s[6:])

# 从第1个索引位置开始，到第5个索引位置，每隔一个字符取一个字符
# s[start:end:step]
print(s[1:5:2])

# 从第1个索引位置开始，到末尾，每隔一个字符取一个字符
# s[::step]
print(s[::2])

# 字符串拼接
# + 运算符拼接
name = "张三"
age = 18
addr = "北京"
result = "我叫" + name + "，年龄是" + str(age) + "，地址是" + addr

# 使用join方法拼接
result1 = "".join([name, "，年龄是", str(age), "，地址是", addr])

# 字符会串的格式化
name = "张三"
age = 18
score = 89.5
# f表达式格式化
result2 = f"我叫{name}，年龄是{age}，成绩是{score:.1f}"
# 使用format方法
result3 = "我叫{}, 年龄是{}, 成绩是{:.1f}".format(name, age, score)

# 格式化控制
# 保留小数位数
pi = 3.14159265359
# 保留两位小数
print(f"{pi:.2f}")

# 对齐文本
text = "Hello"
number = 42

# 左对齐
print(f"文本：{text:<10} 数字：{number}")
# 右对齐
print(f"文本：{text:>10} 数字：{number}")
# 居中对齐
print(f"文本：{text:^10} 数字：{number}")
# 填充字符
print(f"文本：{text:_^10} 数字：{number}")

# 特殊字符
# \n:表示换行
print("hello\nworld")
# \t:表示制表符
print("hello\tworld")
# \\:表示\
print("hello\\world")
# \':表示单引号
print('hello\'world')
# \":表示双引号
print("hello\"world")
# 原字符：使转义字符失效的
print(r"hello\nworld")
print(r"hello\'world")

# 常用的字符串方法
# join：把字符串序列转换为一个字符串
words = ['Hello', 'World', 'Python']
# 把words中的每个字符串按顺序拼接成一个字符串，每个字符串之间用指定空格隔开
sentence = ' '.join(words)
print(sentence)

# format：格式化字符串
name = "张三"
age = 18
print("我叫{}, 年龄是{}".format(name, age))

# find：搜索字符串中某个子串首次出现的位置，如果找不到，返回-1
print("hello world".find("world"))  # 6
print("hello world".find("python")) # -1
print("hello world".find("l"))  # 2

# count: 计算字符串中某个子串出现的次数
print("hello world".count("l")) # 3
# 在count时指定起始位置和结束位置，那么统计时只通在这个范围内进行统计
print("hello world".count("l", 0, 5))   # 2

# strip：去掉字符串头尾指定的字符（默认空格）
print("   hello world   ".strip())
# lstrip：去掉字符串左边指定的字符（默认空格）
print("   hello world   ".lstrip())
# rstrip：去掉字符串右边指定的字符（默认空格）
print("   hello world   ".rstrip())

# upper：转换字符串中所有字母为大写
print("hello world".upper())
# lower：转换字符串中所有字母为小写
print("HELLO WORLD".lower())

# replace：替换字符串中某个子串
print("hello world".replace("world", "python"))

